iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 16
0
AI & Data

DialogFlow從零開始30天系列 第 16

DialogFlow從零開始16天-Webhook Node.js開發-詢問地理位置

  • 分享至 

  • xImage
  •  

前言:

   在使用外部API時,常常都需要地理位置,那就來詢問使用者地理位置吧。

DialogFlow :

 1.設計詢問要地理位置的意圖(Intent),可多新增action再詢問關鍵參數,例如我想要去玩?、今天天氣如何?

recommand
action

 2.增加一個user_info意圖(Intent),在事件(Events)增加 Google Assistant Permission

userinfo

 3.兩個Intent的Fulfillment都要開啟

fulfillment

Node.js

 處理意圖和詢問地理位置後,使用者回覆同意後,就可以呼叫API,回覆API的資訊。

1.詢問地理位置的意圖命稱

//intent process
app.intent('詢問地理位置的意圖命稱', (conv) => {
	conv.data.requestedPermission = 'DEVICE_PRECISE_LOCATION'; 
    //詢問使用者地理位置
    return conv.ask(new Permission({
        context: '您好',
        permissions: conv.data.requestedPermission
      })
    );
});

2.使用者同意或不同意地理位置意圖處理及呼叫API

//Location Intent
app.intent('user_info', (conv, params, permissionGranted) => {
    if (permissionGranted) {
        const {
            requestedPermission
        } = conv.data;
        if (requestedPermission === 'DEVICE_PRECISE_LOCATION') {
            
            const {
                coordinates
            } = conv.device.location;
             
             if (coordinates) {
                 return Call_API(API參數).then((API回應) => {
     			conv.ask(API回應);
   				})
            } else {
                // Note: Currently, precise locaton only returns lat/lng coordinates on phones and lat/lng coordinates
                // and a geocoded address on voice-activated speakers.
                // Coarse location only works on voice-activated speakers.
                return conv.close('抱歉,我不知道你在哪裡。');
            }
 
        }
    } else {
        return conv.close('好的,那你還想問什麼問題嗎?');
    }
});

3.呼叫外部API

    //external API start
    /**
    * Make an external API call to get open data.
    * @return {Promise<string>}
    */

    Call_API(API參數)

   //external API end 
使用心得:
     利用上面的方法,就可以詢問使用者並得到使用者授權的地理位置。

參考:
https://github.com/actions-on-google/assistant-conversation-nodejs
https://github.com/googleapis/nodejs-dialogflow
https://developers.google.com/assistant/conversational/df-asdk/reference/nodejsv2/overview


上一篇
DialogFlow從零開始15天-Webhook Node.js開發
下一篇
DialogFlow從零開始17天-Webhook 本機測試工具-ngrok
系列文
DialogFlow從零開始30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言